package realdance.swing;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;

import javax.swing.ImageIcon;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu.Separator;
import javax.swing.KeyStroke;

// 메뉴 작성법
// JMenuBar -> JMenu -> JMenuItem
// 오늘 지시한건 1차적인 패널 분할 - 액자작업
// 여기 있는 작업 
// 매우중요 오늘안으로 필히 익힐 것 


public class SwingMenu extends JMenuBar {

	private JMenu mnFile = null; // 파일
	private JMenu mnEdit = null; // 편집
	private JMenu mnView = null; // 보기
	private JMenu mnTool = null; // 도구
	private JMenu mnWkd = null;  // 창
	private JMenu mnHelp = null; // 도움말

	private static SwingMenuActionListener mnal = null;
	
	public SwingMenu() {
	mnal = new SwingMenuActionListener();
	makeMenu();
	makeMenuItem();
	addShortCut();
	addMenu();
	
}
	// 메뉴바에 추가할 메뉴를 생성함
	private void makeMenu() {
		mnFile = new JMenu("파일(F)");
		mnEdit = new JMenu("편집(E)");
		mnView = new JMenu("보기(V)");
		mnTool = new JMenu("도구(T)");
		mnWkd = new JMenu("창(W)");
		mnHelp = new JMenu("도움말(H)");
	}
	// 메뉴항목에 단축키 지정
	private void addShortCut() {
		mnFile.setMnemonic(KeyEvent.VK_F);
		mnEdit.setMnemonic(KeyEvent.VK_E);
		mnView.setMnemonic(KeyEvent.VK_V);
		mnTool.setMnemonic(KeyEvent.VK_T);
		mnWkd.setMnemonic(KeyEvent.VK_W);
		mnHelp.setMnemonic(KeyEvent.VK_H);
		
}		
	// 생성 및 설정된 메뉴를 메뉴바에 추가
	private void addMenu() {
	add(mnFile);
	add(mnEdit);
	add(mnView);
	add(mnTool);
	add(mnWkd);
	add(mnHelp);
}
	// 메뉴에 추가할 메뉴항목 menu item 생성
	// 배열을 이용하면 조금 편해짐
	private JMenuItem makemenuItems(
			String text, String img, int skey,
			boolean off, int akey){
		
		String icon = null; // 메뉴에 쓸 아이콘 
		if(img != null)		// 아이콘 이미지가 있으면
		icon = "/images/menu/" + img + ".png";
		JMenuItem mnitem = null;
		try{
		mnitem = new JMenuItem(text,
				new ImageIcon(getClass().getResource(icon)));
		}catch(Exception ex){
			mnitem = new JMenuItem(text);
		}
		
		mnitem.setEnabled(off); // 메뉴활성 or 비활성
		mnitem.setMnemonic(skey);
		mnitem.setAccelerator(KeyStroke.getKeyStroke(akey,
				ActionEvent.CTRL_MASK));
		
		// 이벤트 처리 관련
		mnitem.addActionListener(mnal);
		mnitem.setActionCommand(img);
		
		return mnitem;
	}
	
	private void makeMenuItem() {
		mnFile.add(makemenuItems("새 파일(N)     ", "new", KeyEvent.VK_N, true, KeyEvent.VK_1)); //메뉴추가
		mnFile.addSeparator();
		mnFile.add(makemenuItems("닫기(C)", "close", KeyEvent.VK_C, true,KeyEvent.VK_2)); //메뉴추가
		mnFile.addSeparator();
		mnFile.add(makemenuItems("종료(X)", "exit", KeyEvent.VK_X,true,KeyEvent.VK_3)); //메뉴추가

		mnEdit.add(makemenuItems("수정(M)", null, KeyEvent.VK_M, true, KeyEvent.VK_4)); //메뉴추가
		mnEdit.addSeparator();
	
		mnHelp.add(makemenuItems("프로젝트 정보(I)", "about", KeyEvent.VK_I, true, 0));
	}
	
	}
